﻿#include "QCefBrowserApp.h"

#include "QCefContext.h"

//////////////////////////////////////////////////////////////////////////
//
QCefBrowserApp* QCefBrowserApp::ms_instance = nullptr;


//////////////////////////////////////////////////////////////////////////
//
QCefBrowserApp::QCefBrowserApp()
{
    QCEF_DEBUG();

    //...

    //保存第一个实例
    if (ms_instance == nullptr)
    {
        ms_instance = this;
    }
}

QCefBrowserApp::~QCefBrowserApp()
{
    QCEF_DEBUG();

    //
    if (ms_instance == this)
    {
        ms_instance = nullptr;
    }

    //...
}


//////////////////////////////////////////////////////////////////////////
//CefApp
void QCefBrowserApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line)
{
    QCEF_DEBUG();

    //
    QCefConfig::ArgsMap & args = cefCtxPtr()->getCefConfig().getArgs();
    for (QCefConfig::ArgsMap::iterator it = args.begin(); it != args.end(); it++)
    {
        if (!it->first.empty() && !command_line->HasSwitch(it->first))
        {
            if (!it->second.empty())
            {
                command_line->AppendSwitchWithValue(it->first, it->second);
            }
            else
            {
                command_line->AppendSwitch(it->first);
            }
        }
    }
}

CefRefPtr<CefBrowserProcessHandler> QCefBrowserApp::GetBrowserProcessHandler()
{
    QCEF_DEBUG();

    return this;
}


CefRefPtr<CefRenderProcessHandler> QCefBrowserApp::GetRenderProcessHandler()
{
    QCEF_DEBUG();

#ifdef QT_CEF_SINGLE_PROCESS
    return this;
#else
    return nullptr;
#endif // QT_CEF_SINGLE_PROCESS
    
}


